Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

232
Views
¿Cómo mostrar el "temporizador hacia atrás" usando JavaScript?

Tengo mi DOM así:

 <input type="number" id="input" value="" placeholder="Enter time in minutes"> <button id="button">Go</button> <button id="reset">reset</button> <div class="timer"> <div class="mint" id="mint"></div> <div class="sec" id="sec"></div> </div>

Y mi JavaScript me gusta esto:

 let currentTime = 0; let intervalClear; let input = document.getElementById('input'); let button = document.getElementById('button') button.addEventListener('click', ()=>{ let value = input.value * 60000; function getTime(){ currentTime++ function backcount(currentTime){ let output = value - currentTime console.log(output); const mint = document.getElementById('mint'), sec = document.getElementById('sec'); let minute = Math.floor(output/60000) let second = ((output % 60000) / 1000).toFixed(0) mint.innerText = minute; sec.innerText = second; if(output == 0){ clearInterval(intervalClear) } } backcount(currentTime); } getTime() intervalClear = setInterval(getTime, 1000) }) const reset = document.getElementById('reset') reset.addEventListener('click', ()=>{ clearInterval(intervalClear); input.value = ''; })

ahora quiero mostrar valor en mi página web pero no se actualiza. parece que se congela. pero mi "setInterval()" funciona correctamente.

¿Cómo puedo resolver este problema? ¡necesitas ayuda!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Necesitas en lugar de este código

 let output = value - currentTime

utilizar este

 let output = value - (currentTime * 1000) 

 let currentTime = 0; let intervalClear; let input = document.getElementById('input'); let button = document.getElementById('button') button.addEventListener('click', ()=>{ let value = input.value * 60000; function getTime(){ currentTime++ function backcount(currentTime){ let output = value - (currentTime * 1000) console.log(output); const mint = document.getElementById('mint'), sec = document.getElementById('sec'); let minute = Math.floor(output/60000) let second = ((output % 60000) / 1000).toFixed(0) mint.innerText = minute; sec.innerText = second; if(output == 0){ clearInterval(intervalClear) } } backcount(currentTime); } getTime() intervalClear = setInterval(getTime, 1000) }) const reset = document.getElementById('reset') reset.addEventListener('click', ()=>{ clearInterval(intervalClear); input.value = ''; })
 <input type="number" id="input" value="" placeholder="Enter time in minutes"> <button id="button">Go</button> <button id="reset">reset</button> <div class="timer"> <div class="mint" id="mint"></div> <div class="sec" id="sec"></div> </div>

about 4 years ago · Juan Pablo Isaza Report

0

Según la respuesta de @ Oleg Barabanov, encontré un error. Si no ingresó ningún valor en el cuadro de texto o el primer valor agregado, haga clic en "Restablecer" y haga clic en el botón "Ir", luego el contador comenzó con un valor negativo. Solucioné ese problema con este código.

Guion

 var intervalClear; var input = document.querySelector('#input'); var mint = document.querySelector('#mint'); var sec = document.querySelector('#sec'); var go_button = document.querySelector('#button'); var reset_button = document.querySelector('#reset'); go_button?.addEventListener('click', () => { if (input.value != '' && input.value != 0 && parseInt(input.value) != NaN) { startTimer(input.value, mint, sec); } }); reset_button?.addEventListener('click', () => { clearInterval(intervalClear); mint.textContent = '00'; sec.textContent = '00'; }); function startTimer(duration, minElement, secElement) { clearInterval(intervalClear); var timer = duration * 60, minutes, seconds; intervalClear = setInterval(function () { minutes = parseInt(timer / 60, 10); seconds = parseInt(timer % 60, 10); minutes = minutes < 10 ? "0" + minutes : minutes; seconds = seconds < 10 ? "0" + seconds : seconds; minElement.textContent = minutes; secElement.textContent = seconds; if (--timer < 0) { timer = duration; } if (minutes == 0 && seconds == 0) { clearInterval(intervalClear); mint.textContent = '00'; sec.textContent = '00'; } }, 1000); }

DOM

 <input type="number" id="input" placeholder="Enter time in minutes" > <button id="button">Go</button> <button id="reset">reset</button> <div class="timer"> <div class="mint" id="mint">00</div> <div class="sec" id="sec">00</div> </div>
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!